package com.lizard.schedule.manager.observer;

import com.lizard.schedule.persistence.db.bean.Schedule;

import java.util.List;
import java.util.Map;

/**
 * 观察者通知管理类中的观察者接口在这里定义
 */
public class ObserverIfaces {

    /**
     * 通知界面更新计划
     */
    public interface UpdateScheduleToUi {
        public void update(Schedule schedule);
    }

    /**
     * 通知界面重新加载未结束的历史计划数
     */
    public interface ReloadUnfinishedHistoryScheduleCount {
        public void reload();
    }

    /**
     * 同步监听接口
     */
    public interface SyncListener{

        /**
         * 网络错误
         */
        public void netWorkError();

        /**
         * 已是最新数据，无需同步(client无更新提交，server也无新数据)
         */
        public void noSync();

        /**
         * 同步成功,server的新数据同步到本地,本地的修改也提交到server（已更新到本地db）
         *
         * @param submitedLocalIds  提交的server的数据在本地的localId
         * @param addedServerIds    添加到server的新数据的serverId
         */
        public void syncSuccess(List<Integer> submitedLocalIds, Map<Integer, Long> addedServerIds);

        /**
         * 有新数据从server同步下来(已更新到本地db)
         *
         * @param addList
         * @param updateList
         * @param deleteList
         */
        public void newData(List<Schedule> addList, List<Schedule> updateList, List<Schedule> deleteList);

        /**
         * 服务器返回错误码
         *
         * @param returnCode
         */
        public void responseFailed(String returnCode);

    }

    /**
     * 退出登录回调
     */
    public interface Logout {
        public void logout();
    };

}
